Traditional processor core microarchitectures do not adapt well to the thread level parallelism available in programs. While large out-of-order (OOO) cores are capable of providing high single thread performance by exploiting instruction-level parallelism, they may become power-inefficient for multi-threaded programs. Conversely, small cores provide high parallel throughput, but may do so at the cost of poor single thread performance.